From: Adel Gadllah Date: Tue, 18 Feb 2014 17:10:22 +0000 (+0100) Subject: extensionSystem: Add a gsettings key to disable version validation X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2739 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1af40b1345441c925f444ca19fe7914893e12863;p=gnome-shell.git extensionSystem: Add a gsettings key to disable version validation Add a key 'disable-extension-version-validation' key that disables the validation of extension's claimed to be supported shell version with the shell version and just load all extensions unconditionally. https://bugzilla.gnome.org/show_bug.cgi?id=724683 --- diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in index d8eac1815..0f96e64b9 100644 --- a/data/org.gnome.shell.gschema.xml.in.in +++ b/data/org.gnome.shell.gschema.xml.in.in @@ -21,6 +21,15 @@ EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell. + + false + <_summary>Disables the validation of extension version compatibility + <_description> + GNOME Shell will only load extensions that claim to support the current + running version. Enabling this option will disable this check and try to + load all extensions regardless of the versions they claim to support. + + [ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ] <_summary>List of desktop file IDs for favorite applications diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 40a48876e..3f0e1709c 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -38,6 +38,7 @@ const connect = Lang.bind(_signals, _signals.connect); const disconnect = Lang.bind(_signals, _signals.disconnect); const ENABLED_EXTENSIONS_KEY = 'enabled-extensions'; +const EXTENSION_DISABLE_VERSION_CHECK_KEY = 'disable-extension-version-validation'; var initted = false; var enabled; @@ -156,7 +157,9 @@ function loadExtension(extension) { // Default to error, we set success as the last step extension.state = ExtensionState.ERROR; - if (ExtensionUtils.isOutOfDate(extension)) { + let checkVersion = !global.settings.get_boolean(EXTENSION_DISABLE_VERSION_CHECK_KEY); + + if (checkVersion && ExtensionUtils.isOutOfDate(extension)) { extension.state = ExtensionState.OUT_OF_DATE; } else { let enabled = enabledExtensions.indexOf(extension.uuid) != -1; @@ -267,8 +270,19 @@ function onEnabledExtensionsChanged() { enabledExtensions = newEnabledExtensions; } +function _onVersionValidationChanged() { + if (Main.sessionMode.allowExtensions) { + enabledExtensions.forEach(function(uuid) { + if (ExtensionUtils.extensions[uuid]) + reloadExtension(ExtensionUtils.extensions[uuid]); + }); + } +} + function _loadExtensions() { global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged); + global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged); + enabledExtensions = getEnabledExtensions(); let finder = new ExtensionUtils.ExtensionFinder();